package com.xiaoma.weblog.jwt.config.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * @ClassName PasswordEncoderConfig
 * @Description:
 * @Author: 小马
 * @CreateDate: 2025/3/27 15:09
 * @Version: 1.0
 *
 * 技术介绍
 * 安全性： 存储加密后的密码可以防止明文密码泄漏，即使数据库被攻击也不会暴露用户的真实密码。
 * 防御攻击： 使用密码哈希算法可以防止常见的攻击，如彩虹表攻击。
 * 隐私保护： 用户的密码是敏感信息，应当采取措施来保护用户的隐私。
 *
 * PasswordEncoder 接口是 Spring Security 提供的密码加密接口，它定义了密码加密和密码验证的方法。通过实现这个接口，
 * 您可以将密码加密为不可逆的哈希值，以及在验证密码时对比哈希值。
 */
@Configuration
public class PasswordEncoderConfig {
    @Bean
    public PasswordEncoder passwordEncoder() {
        // BCrypt 是一种安全且适合密码存储的哈希算法，它在进行哈希时会自动加入“盐”，增加密码的安全性。
        return new BCryptPasswordEncoder();
    }

    public static void main(String[] args) {
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        System.out.println(encoder.encode("xiaoma"));
    }
}